// malred-vue-template-js/src/api/index.js
/*
 * @Author Malred
 * @Date 2025-05-31 18:25:00
 * @Description 扫描并将请求后端的方法挂载到vue
 */
const modules = import.meta.glob('./**/index.js') // 只扫描 index.js 文件
const requests = {}

for (const path in modules) {
    if (path === './index.js') continue // 跳过自身

    const modulePath = path
        .replace('./', '')
        .replace('/index.js', '') // 去除前缀和后缀
    const segments = modulePath.split('/') // 分割路径层级

    // 安全获取模块名：如果是单层目录（如 admin/index），则直接取第一个段
    const moduleName = segments[segments.length - 1]
    console.log('api', moduleName)
    console.log('api', segments)

    let currentLevel = requests

    // 构建嵌套结构
    // for (let i = 0; i < segments.length - 1; i++) {
    for (let i = 0; i < segments.length; i++) {
        const segment = segments[i]
        currentLevel[segment] = currentLevel[segment] || {}
        currentLevel = currentLevel[segment]
    }

    // 加载模块并挂载到对应位置
    // 要加await, 否则为这些函数为空
    await modules[path]().then(module => {
        console.log('currentLevel', currentLevel)
        console.log('moduleName', moduleName)

        // currentLevel[moduleName] = module.default
        // 然后直接赋值给 currentLevel（不再使用 moduleName）
        Object.assign(currentLevel, module.default)
        // currentLevel = module.default
    })
}

console.log('request', requests)

export default {
    install: (app) => {
        // app.config.globalProperties.$requests = requests
        app.config.globalProperties.$api = requests
    },
}
